* Maven repository snapshot pruner

This is a Java application that will traverse a maven repository directory hierarchy and delete all deployed snapshot artifacts except for the snapshot version currently in the maven-metadata.xml files.

The program is intended to clean up snapshot repositories created with "mvn deploy" either using "file:" or "ftp:" URLs, and is intended to be run as a cronjob.

** Status

[[https://github.com/steinarb/maven-repository-snapshot-pruner/actions/workflows/maven-repository-snapshot-pruner-maven-ci-build.yml][file:https://github.com/steinarb/maven-repository-snapshot-pruner/actions/workflows/maven-repository-snapshot-pruner-maven-ci-build.yml/badge.svg]]
[[https://coveralls.io/github/steinarb/maven-repository-snapshot-pruner][file:https://coveralls.io/repos/github/steinarb/maven-repository-snapshot-pruner/badge.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=alert_status#.svg]]

[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/images/project_badges/sonarcloud-white.svg]]

[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=sqale_index#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=coverage#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=ncloc#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=code_smells#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=sqale_rating#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=security_rating#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=bugs#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=vulnerabilities#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=duplicated_lines_density#.svg]]
[[https://sonarcloud.io/summary/new_code?id=steinarb_maven-repository-snapshot-pruner][file:https://sonarcloud.io/api/project_badges/measure?project=steinarb_maven-repository-snapshot-pruner&metric=reliability_rating#.svg]]
** Installation on a debian system

 1. Install the prerequisites
    #+BEGIN_EXAMPLE
      apt-get install git maven default-jdk
    #+END_EXAMPLE
 2. Clone and build the repository snapshot pruner
    #+BEGIN_EXAMPLE
      cd /var/www-maven/
      mkdir -p .m2
      chown -R maven.maven .m2
      git clone https://github.com/steinarb/maven-repository-snapshot-pruner
      chown -R maven.maven maven-repository-snapshot-pruner
      cd maven-repository-snapshot-pruner
      sudo -u maven git config pull.ff only
    #+END_EXAMPLE
 3. Run the pruner once a day as that user (in the example the user with the username "maven" is used:
    1. Run this command as root
       #+BEGIN_EXAMPLE
         sudo -u maven crontab -e
       #+END_EXAMPLE
    2. In the editor that is opened add the following line (the ">/dev/null" is to avoid nightly emails, remove it if more debugging is needed):
       #+BEGIN_EXAMPLE
         55 23 * * * cd /var/www-maven/maven-repository-snapshot-pruner; git pull >/dev/null; mvn compile exec:java -Duser.dir=/var/www-maven/repository >/dev/null
       #+END_EXAMPLE
* License

The license is Apache Public License v 2.0.

See the LICENSE file for details.
